--- title: Training keywords: fastai sidebar: home_sidebar summary: "Notebook to train deep learning models or ensembles for segmentation of fluorescent labels in microscopy images." description: "Notebook to train deep learning models or ensembles for segmentation of fluorescent labels in microscopy images." nb_path: "nbs/_trash/_old/train-Copy1.ipynb" ---
#@markdown Please run this cell to get started.
%load_ext autoreload
%autoreload 2
try:
from google.colab import files, drive
except ImportError:
pass
try:
import deepflash2
except ImportError:
!pip install -q deepflash2
import zipfile
import shutil
import imageio
from sklearn.model_selection import KFold, train_test_split
from fastai.vision.all import *
from deepflash2.all import *
from deepflash2.data import _read_msk
from scipy.stats import entropy
path = Path('sample_data_cFOS')
url = "https://github.com/matjesg/deepflash2/releases/download/model_library/wue1_cFOS_small.zip"
urllib.request.urlretrieve(url, 'sample_data_cFOS.zip')
unzip(path, 'sample_data_cFOS.zip')
image_folder = "images" #@param {type:"string"}
mask_folder = "masks" #@param {type:"string"}
mask_suffix = "_mask.png" #@param {type:"string"}
#@markdown Number of classes: e.g., 2 for binary segmentation (foreground and background class)
n_classes = 2 #@param {type:"integer"}
#@markdown Check if you are providing instance labels (class-aware and instance-aware)
instance_labels = False #@param {type:"boolean"}
f_names = get_image_files(path/image_folder)
label_fn = lambda o: path/mask_folder/f'{o.stem}{mask_suffix}'
#Check if corresponding masks exist
mask_check = [os.path.isfile(label_fn(x)) for x in f_names]
if len(f_names)==sum(mask_check) and len(f_names)>0:
print(f'Found {len(f_names)} images and {sum(mask_check)} masks in "{path}".')
else:
print(f'IMAGE/MASK MISMATCH! Found {len(f_names)} images and {sum(mask_check)} masks in "{path}".')
print('Please check the steps above.')
Found 5 images and 5 masks in "sample_data_cFOS".
el = EnsembleLearner(f_names, label_fn, arch='unext50_deepflash2')
#el = EnsembleLearner(f_names, label_fn, arch='unet_deepflash2')
el.set_n(1)
el.ds_kwargs
{'tile_shape': (518, 518), 'padding': (126, 126)}
el.fit_ensemble(20, n_jobs=1, pre_ssl=True)
Creating weights for 0001.png
--------------------------------------------------------------------------- NameError Traceback (most recent call last) /media/data/deepflash2/deepflash2/data.py in _create_weights(self, n_jobs, verbose) 359 try: --> 360 lbl, wgt, pdf = _get_cached_data(self._cache_fn(file.name)) 361 if not using_cache: NameError: name 'file' is not defined During handling of the above exception, another exception occurred: KeyboardInterrupt Traceback (most recent call last) <ipython-input-11-b3806508d497> in <module> ----> 1 el.fit_ensemble(20, n_jobs=1, pre_ssl=True) /media/data/deepflash2/deepflash2/learner.py in fit_ensemble(self, epochs, skip, **kwargs) 145 for i in range(1, self.n+1): 146 if skip and (i in self.models): continue --> 147 self.fit(i, epochs, **kwargs) 148 149 def set_n(self, n): /media/data/deepflash2/deepflash2/learner.py in fit(self, i, epochs, lr_max, bs, n_jobs, verbose, **kwargs) 126 name = self.ensemble_dir/f'{self.arch}_model-{i}.pth' 127 files_train, files_val = self.splits[i] --> 128 train_ds = RandomTileDataset(files_train, label_fn=self.label_fn, n_jobs=n_jobs, verbose=verbose, **self.mw_kwargs, **self.ds_kwargs) 129 valid_ds = TileDataset(files_val, label_fn=self.label_fn, n_jobs=n_jobs, verbose=verbose, **self.mw_kwargs,**self.ds_kwargs) 130 batch_tfms = Normalize.from_stats(*self.stats) /media/data/deepflash2/deepflash2/data.py in __init__(self, sample_mult, flip, rotation_range_deg, deformation_grid, deformation_magnitude, value_minimum_range, value_maximum_range, value_slope_range, *args, **kwargs) 434 def __init__(self, *args, sample_mult=None, flip=True, rotation_range_deg=(0, 360), deformation_grid=(150, 150), deformation_magnitude=(10, 10), 435 value_minimum_range=(0, 0), value_maximum_range=(1, 1), value_slope_range=(1, 1), **kwargs): --> 436 super().__init__(*args, **kwargs) 437 store_attr('sample_mult, flip, rotation_range_deg, deformation_grid, deformation_magnitude, value_minimum_range, \ 438 value_maximum_range, value_slope_range') /media/data/deepflash2/deepflash2/data.py in __init__(self, files, label_fn, create_weights, instance_labels, n_classes, divide, ignore, tile_shape, padding, preproc_dir, bws, fds, bwf, fbr, n_jobs, verbose, **kwargs) 333 else: self.preproc_dir = Path(preproc_dir) 334 self.preproc_dir.mkdir(exist_ok=True, parents=True) --> 335 if create_weights: self._create_weights(n_jobs, verbose) 336 337 def _cache_fn(self, o): /media/data/deepflash2/deepflash2/data.py in _create_weights(self, n_jobs, verbose) 365 if n_jobs==1: 366 if verbose>0: print('Creating weights for', f.name) --> 367 self._preproc(f) 368 else: 369 preproc_queue.append(f) /media/data/deepflash2/deepflash2/data.py in _preproc(self, file) 349 instlabels = None 350 ign = self.ignore[file.name] if file.name in self.ignore else None --> 351 lbl, wgt, pdf = calculate_weights(clabels, instlabels, ignore=ign, n_dims=self.c, 352 bws=self.bws, fds=self.fds, bwf=self.bwf, fbr=self.fbr) 353 np.savez_compressed(self._cache_fn(file.name), lbl=lbl, wgt=wgt, pdf=pdf) /media/data/deepflash2/deepflash2/data.py in calculate_weights(clabels, instlabels, ignore, n_dims, bws, fds, bwf, fbr) 179 dt = ndimage.morphology.distance_transform_edt(instlabels != instance) 180 --> 181 frgrd_dist += np.exp(-dt ** 2 / (2*fds ** 2)) 182 min2dist = np.minimum(min2dist, dt) 183 newMin1 = np.minimum(min1dist, min2dist) KeyboardInterrupt:
el.show_validation_results()
Using cache found in /media/data/home/mag01ud/.cache/torch/hub/matjesg_deepflash2_master
m=UneXt50()
m
Using cache found in /media/data/home/mag01ud/.cache/torch/hub/facebookresearch_semi-supervised-ImageNet1K-models_master
UneXt50(
(enc0): Sequential(
(0): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(enc1): Sequential(
(0): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
(1): Sequential(
(0): Bottleneck(
(conv1): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(1): Bottleneck(
(conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
)
)
(enc2): Sequential(
(0): Bottleneck(
(conv1): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(1): Bottleneck(
(conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(3): Bottleneck(
(conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
)
(enc3): Sequential(
(0): Bottleneck(
(conv1): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)
(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(1): Bottleneck(
(conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(3): Bottleneck(
(conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(4): Bottleneck(
(conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(5): Bottleneck(
(conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
)
(enc4): Sequential(
(0): Bottleneck(
(conv1): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
(downsample): Sequential(
(0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)
(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
)
)
(1): Bottleneck(
(conv1): Conv2d(2048, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
(2): Bottleneck(
(conv1): Conv2d(2048, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv2): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32, bias=False)
(bn2): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv3): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU(inplace=True)
)
)
(aspp): ASPP(
(aspps): ModuleList(
(0): _ASPPModule(
(atrous_conv): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU()
)
(1): _ASPPModule(
(atrous_conv): Conv2d(2048, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=4, bias=False)
(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU()
)
(2): _ASPPModule(
(atrous_conv): Conv2d(2048, 256, kernel_size=(3, 3), stride=(1, 1), padding=(2, 2), dilation=(2, 2), groups=4, bias=False)
(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU()
)
(3): _ASPPModule(
(atrous_conv): Conv2d(2048, 256, kernel_size=(3, 3), stride=(1, 1), padding=(3, 3), dilation=(3, 3), groups=4, bias=False)
(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU()
)
(4): _ASPPModule(
(atrous_conv): Conv2d(2048, 256, kernel_size=(3, 3), stride=(1, 1), padding=(4, 4), dilation=(4, 4), groups=4, bias=False)
(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(relu): ReLU()
)
)
(global_pool): Sequential(
(0): AdaptiveMaxPool2d(output_size=(1, 1))
(1): Conv2d(2048, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(3): ReLU()
)
(out_conv): Sequential(
(0): Conv2d(1536, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU(inplace=True)
)
(conv1): Conv2d(1536, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)
)
(drop_aspp): Dropout2d(p=0.5, inplace=False)
(dec4): UnetBlock(
(shuf): PixelShuffle_ICNR(
(0): ConvLayer(
(0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1))
(1): ReLU()
)
(1): PixelShuffle(upscale_factor=2)
)
(bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv1): ConvLayer(
(0): Conv2d(1280, 256, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(conv2): ConvLayer(
(0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(relu): ReLU(inplace=True)
)
(dec3): UnetBlock(
(shuf): PixelShuffle_ICNR(
(0): ConvLayer(
(0): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1))
(1): ReLU()
)
(1): PixelShuffle(upscale_factor=2)
)
(bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv1): ConvLayer(
(0): Conv2d(640, 128, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(conv2): ConvLayer(
(0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(relu): ReLU(inplace=True)
)
(dec2): UnetBlock(
(shuf): PixelShuffle_ICNR(
(0): ConvLayer(
(0): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1))
(1): ReLU()
)
(1): PixelShuffle(upscale_factor=2)
)
(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv1): ConvLayer(
(0): Conv2d(320, 64, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(conv2): ConvLayer(
(0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(relu): ReLU(inplace=True)
)
(dec1): UnetBlock(
(shuf): PixelShuffle_ICNR(
(0): ConvLayer(
(0): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1))
(1): ReLU()
)
(1): PixelShuffle(upscale_factor=2)
)
(bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(conv1): ConvLayer(
(0): Conv2d(96, 32, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(conv2): ConvLayer(
(0): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU()
)
(relu): ReLU(inplace=True)
)
(fpn): FPN(
(convs): ModuleList(
(0): Sequential(
(0): Conv2d(512, 32, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU(inplace=True)
(2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(3): Conv2d(32, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(1): Sequential(
(0): Conv2d(256, 32, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU(inplace=True)
(2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(3): Conv2d(32, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(2): Sequential(
(0): Conv2d(128, 32, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU(inplace=True)
(2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(3): Conv2d(32, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
(3): Sequential(
(0): Conv2d(64, 32, kernel_size=(3, 3), stride=(1, 1))
(1): ReLU(inplace=True)
(2): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(3): Conv2d(32, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
)
)
)
(drop): Dropout2d(p=0.1, inplace=False)
(final_conv): ConvLayer(
(0): Conv2d(96, 2, kernel_size=(1, 1), stride=(1, 1))
)
)
res = el.predict(f_names, 1,energy_ks=None)
Using cache found in /media/data/home/mag01ud/.cache/torch/hub/matjesg_deepflash2_master
for i, n in enumerate(f_names):
print(n)
fig, axs = plt.subplots(nrows=1, ncols=1, figsize=(30,30))
axs.imshow(res[3][i])
plt.show()
sample_data_cFOS/images/0001.png
sample_data_cFOS/images/0004.png
sample_data_cFOS/images/0007.png